package com.huatai.saas.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.huatai.model.entity.Model;
import com.huatai.model.entity.ModelQuery;
import com.huatai.saas.entity.UserModelAuth;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huatai.saas.vo.DelModelParamVo;
import com.huatai.saas.vo.ModelAuthParamVo;
import com.huatai.saas.vo.ModelVo;
import com.huatai.saas.vo.UserModelParamVo;

import java.util.List;

/**
 * <p>
 * 用户模型授权表 服务类
 * </p>
 *
 * @author songxiude
 * @since 2024-04-28
 */
public interface UserModelAuthService extends IService<UserModelAuth> {

	/**
	 * 用户模型授权
	 * @param authParamVo
	 * @return
	 */
    boolean userModelAuth(ModelAuthParamVo authParamVo);

	/**
	 * 用户获取模型列表
	 * @param paramVo
	 * @return
	 */
    IPage<ModelVo> getUserModels(UserModelParamVo paramVo);

	/**
	 * 模型文件分片下载
	 * @param modelId
	 * @param shardingNum
	 */
    void modelDownload(Long modelId,int shardingNum);

	/**
	 * 获取文件分片数
	 * @param modelId
	 * @return
	 */
	int getFileShardingNumber(Long modelId);

	/**
	 * 模型独立下载
	 * @param modelId
	 */
	void oneModelDownload(Long modelId);

	/**
	 * 获取用户端模型列表
	 * @param paramVo
	 * @return
	 */
	IPage<ModelVo> getUserModelList(UserModelParamVo paramVo);

	/**
	 * 批量删除用户授权模型
	 * @param models
	 * @return
	 */
	boolean delUserModels(DelModelParamVo models);

	/**
	 * 获取模型列表用于回显
	 * @param modelQuery
	 * @return
	 */
	IPage<Model> getModelList(ModelQuery modelQuery);
}
